Informace o předmětu
--------------------
Předmět je inspirovaný kurzem [How to Make (almost) Anything](http://cba.mit.edu/classes/index.html) který vede prof. Neil Gershenfeld na MIT.
Doporučuji projít stránky předmětu (každý rok má svůj vlastní rozcestník), kde jsou podklady pro přednášky, recitace, tutoriály a stránky studentů, kde dokumentují svou práci.
V materiálech se také budeme často odkazovat na podobný kurz na Harvardu [Introduction
to Digital Fabrication](https://nathanmelenbrink.github.io/intro-dig-fab/index.html)
Chceme vám poskytnou prostor, abyste se mohli učit sami a také od sebe navzájem (bez vaší aktivity to nepůjde).
Požadavky
---------
* Každý týden splnit úkol (rozsah podle svých schopností) a zdokumentovat na stránkách. Týdenní úkoly mohou ale nemusí být součástí závěrečného projektu.
* Zpracovat a prezentovat závěrečný projekt (musí využívat několik probraných témat - minimálně 3D návrh a výrobu, elektroniku, programování)
# Hodnocení
## Průběžné hodnocení během semestru
Na konci semestru s vámi projdeme vaše stránky a každý týden ohodnotíme. Budeme zvlášť hodnotit každý týden:
- **Hlavním podkladem pro hodnocení budou stránky.**
- Dokumentace musí umožnit **replikaci postupu**, zachycovat **proces tvorby i finální výrobek**.
- Text by měl být doplněn **obrázky, schématy, výrobními podklady, zdrojovými kódy, krátkými videi atd.**
- **Každý týden splníte zadání a dokumentujete práci.**
- Chceme vidět **vlastní invenci**, nejen reprodukci cizího postupu.
- Můžete vyjít z existujícího návrhu, ale musí být jasně vidět **váš vlastní přínos**.
- Dokumentujte včas, aby vaše výsledky mohly být prezentovány na další přednášce.
## Kritéria hodnocení
### **Podle čeho dostanete známku?**
**Minimalistické řešení**: Pokud pouze využijete cizí návrh (zdrojový kód, model, apod.), jedná se o **minimum pro splnění**.
**Lepší hodnocení (B nebo A)**: Je potřeba **jít extra míli**, přidat **vlastní invenci** a **kvalitně dokumentovat**.
**Příprava na cvičení**:
- Měli byste mít **nastudované návody**, připravené **vlastní návrhy/výrobní podklady**.
- Cílem je, abyste se na cvičení mohli **soustředit na výrobu**.
**Samostatnost a proaktivita**:
- Ceníme si, když se **snažíte problémy řešit sami** (Google, ChatGPT, kolegové) před žádostí o asistenci.
- Pozitivně hodnotíme, pokud **pomáháte ostatním**.
**Dobrá dokumentace**:
- Zachycuje nejen výsledek, ale i **proces tvorby**.
- Obsahuje důležité **výrobní parametry, kroky výroby, slepé uličky**.
**Projektové požadavky**:
- **Integrovaný celek** – projekt by neměl působit jako nesourodá sbírka komponent.
- **Neviditelné spoje** – žádné volné dráty nebo nepájivé pole v konečném řešení.
## Složky finálního hodnocení:
- **Dokumentace jednotlivých projektů** (60 %)
- **Dokumentace a prezentace závěrečného projektu** (20 %)
- **Účast a aktivita** (20 %)
## Škála hodnocení dokumentace (0–5 bodů)
- **3,5/5**: Splněno minimum, dobře zdokumentováno.
- **4,5/5**: Projekt překračuje základní požadavky, dobře zdokumentováno.
- **5/5**: Velmi dobrý projekt s vynikající dokumentací.
## Ideální průchod kurzem:
- **Každý týden splnit zadání** (věnujte pozornost všem bodům) a vyrobit něco zajímavého.
- **Chodit připravení na cvičení** s návrhy a výrobními podklady.
- **Snažit se řešit problémy samostatně** a případně pomáhat ostatním.
- **Dokumentovat včas**, aby výsledky mohly být prezentovány na další přednášce.
- **Nejlepší praxe**: Dokumentujte **hned při práci**, případné vyšperkování lze provést dodatečně.
Projekt
-------
* Musí zahrnovat co nejvíce probraných témat - alespoň: 3D design, aditivní nebo subtraktivní výrobní proces, návrh a výrobu elektroniky, programování mikrokontroleru, integraci všech částí v jeden celek
* Projekt může být individuální nebo i týmový, ale každý student musí za sebe demonstrovat zvládnutí všech dovedností a prezentovat svoji práci.
* V prezentaci odpovězte například na tyto otázky: Co to dělá? Co bylo uděláno dříve? Co jste navrhli a vyrobili sami? Jaké jste použili materiály a komponenty? Odkud se vzaly? Kolik stály? Co vám fungovalo, co ne, a jak jste to zhodnotili? Co jste udělali a co ještě zbývá udělat? Co jste se naučili?
* Připravte jeden slajd a minutové video, které ukáže koncepci, konstrukci a provoz.
* V případě, že projekt prezentujete ještě v jiném předmětu (např. LPE, LAR), tak by objem práce měl odpovídat součtu časových dotací.
* Projekt by měl být vaše práce, tedy nestačí vzít cizí výrobní podklady a postupovat podle návodu.
Osobní stránky
--------------
* Umístěné v repozitáři na GitLabu publikované přes GitLab Pages
* Adresa `https://b242_b3b35jvc.pages.fel.cvut.cz/%USERNAME%`
* Obsah stránek:
* Rozcestník na záznam z každého týdne
* Osobní profil - pár vět o vás
* Samostatnou stránku věnovanou závěrečnému projektu
* Na GitLab nenahrávejte zbytečně velké soubory - obrázky i videa komprimujte (ImageMagick, ffmpeg)
* Příklady dobře vedených stránek z předchozích let: [Marek Broul](http://b222_b3b35jvc.pages.fel.cvut.cz/broulma1/), [Zuzana Jindrová](http://b222_b3b35jvc.pages.fel.cvut.cz/jindrzuz/), [Filip Korf](http://b222_b3b35jvc.pages.fel.cvut.cz/korffili/), [Šimon Pecháček](http://b222_b3b35jvc.pages.fel.cvut.cz/pechasim/)
* Další příklady: [FabAcademy: Nadieh Bremer](https://www.visualcinnamon.com/2021/07/fabacademy/), [FabAcademy: Elena Cardiel](https://fabacademy.org/2019/labs/leon/students/elena-cardiel/diary.html), [HTMAA: Bo Heather Bowman](https://fab.cba.mit.edu/classes/863.21/Architecture/people/BoHeatherBowman/Tips-and-Tricks-(How-To).html)
* Git a Gitlab [tutorial](navod_git.html)
Materiál
--------
* Pokud si to můžete dovolit a chcete vyrábět něco zajímavějšího (hodnotnějšího), co si odnesete, tak si součástky a materiál kupte.
* Nějaký základní spotřební materiál (např. karton pro řezání laserem, či filamenty pro seznámení s 3D tiskem) seženeme.
* Elektronické moduly a součástky zajistíme pro zapůjčení.
První přednáška
---------------
* Organizace předmětu
* Představení vyučujících a studentů
* Přednáška
* Show & Tell - přineste ukázat, co jste vyrobili.
* Diskuze nad několika vašimi stránkami (účast na přednáškách je povinná)
* Úvod do tématu daného týdne (téma začínáme a končíme přednáškou)
* Cvičení
* Společný praktický úvod / školení na stroji
* Skupinový úkol
* Individuální práce + dokumentace
* Noste si raději svůj PC
* Inspirace
* Blogy, servery, časopisy: [Hackaday](https://hackaday.com/), [Adafruit blog](https://blog.adafruit.com/), [Instructables](https://www.instructables.com/), [Hackster](https://www.hackster.io/), [Makezine](https://makezine.com/), [Hack Space](https://hackspace.raspberrypi.com/), [MagPi](https://magpi.raspberrypi.com/)
* YT: [StuffMadeHere](https://www.youtube.com/@StuffMadeHere), [James Bruton](https://www.youtube.com/@jamesbruton), [Great Scott lab](https://www.youtube.com/@greatscottlab), [ThisOldTony](https://www.youtube.com/@ThisOldTony)
* CAD
* Fusion 360 (https://www.youtube.com/@ProductDesignOnline, https://www.youtube.com/@AutodeskFusion360, https://youtube.com/playlist?list=PLrZ2zKOtC\_-DR2ZkMaK3YthYLErPxCnT-)
* OpenSCAD
* [HTMAA: Parametric design Recitation](https://alfonso.pages.cba.mit.edu/recitations/parametric_design.html)
* Git a stránky
* [HTMAA: Git & HTML Recitation](https://fab.cba.mit.edu/classes/863.22/doc/git_recitation/index.html)
[https://gitlab.com/pages](https://gitlab.com/pages)
> ## Úkol
> * Naplánujte si a načrtněte potenciální závěrečný projekt.
> * Vymodelujte (obrázek, 2D, 3D, render, animace, simulace) svůj závěrečný projekt.
> * Zmenšete své obrázky a videa.
> * Umístěte popis a obrázky na své stránky. Stránky by měly obsahovat váš stručný profil, sekci o závěrečném projektu a připravené sekce (odkazy) pro jednotlivé úkoly.
Cvičení
-------
* Prohlídka prostor Strojovny
* Bezpečností školení
* Přihlaste se na [fakultní GitLab](https://gitlab.fel.cvut.cz)
* Zkontrolujte, že na stránce `Projects` vidíte svůj repozitář `B242_B3B35JVC / %USERNAME%`. Pokud ne, tak poproste vyučujícího, aby vám ho vytvořil.
* Založte si v něm složku `public` (tlačítko "+" a New Directory).
* Ve složce si vytvořte nový soubor (tlačítko "+" a New File).
* Pojmenujte ho `index.html`.
```html
Ahoj světe
Ahoj světe
Můj první odstavec.
```
* Pokud neznáte HTML mrkněte například sem [W3Schools: HTML Tutorial](https://www.w3schools.com/html/default.asp)
* Pro uložení změn musíte v Git udělat tzv. commit (pokud budete později soubor měnit přes webové rozhraní, tak zvolte možnost ``Commit to main branch``, abyste pak nemuseli dělat merge.)
* Nyní musíte nastavit automatický skript, který bude automaticky obsah adresáře `public/` publikovat na webovém serveru
* V kořenu repozitáře vytvořte soubor `.gitlab-ci.yml`
```yml
pages:
stage: deploy
environment: production
script:
- echo 'Nothing to do...'
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
```
* Tento skript se nyní bude automaticky spouštět, když uděláte změny v repozitáři.
* **Tento krok přeskočte, kvůli oprávněním je předem proveden vyučujícím** (Nyní je ještě potřeba v nastavení repozitáře (projektu) povolit Shared Runners (v levé nabídce `Settings / CI/CD / Runners / Enable shared runners for this project`) bez toho skript nebude fungovat.)
* Pokud skript proběhl v pořádku, tak v nastavení `Deploy / Pages` uvidíte adresu svých stránek `https://b242_b3b35jvc.pages.fel.cvut.cz/%USERNAME%` Pokud má adresa složitější formát, tak v nastavení vypněte "Use unique domain"
* [Návod na jednoduché statické HTML stránky využívající GitLab Pages](https://gitlab.com/pages/plain-html)
* Zkuste na stránku přidat nějaké obrázky (nezapomeňte je před tím zmenšit např pomocí [ImageMagick](http://academy.cba.mit.edu/classes/computer_design/image.html))
* Vzhled stránky si můžete vylepšit pomocí CSS stylů ([W3Schools CSS Tutorial](https://www.w3schools.com/css/default.asp))
* Aby byly CSS styly konzistentní napříč více prohlížeči doporučujeme využít například ([Normalize.css](https://necolas.github.io/normalize.css/)) Každý prohlížeč má totiž nějaké drobé odchylky od CSS standartu. Toto je pouze jeden způsob jak to řešit. ([Návod](navod_normalize_css.html))
* Tvořit a editovat stránky přímo v HTML není úplně příjemné. Můžete zkusit použít generátor statistkých stránek (Static Site Generator GSS), který stránky vygeneruje ze struktorovaného textu.
* Tento generátor si můžete spustit na svém počítači, nebo zkonfigurovat repozitář na GitLabu, aby se generování provedlo na serveru. Zde jsou příklady [https://gitlab.com/pages/](GitLab Pages examples). Populární generátory jsou například jekyll nebo hugo, ale volba je na vás.
* Práce s Gitem přes webové rozhraní je možná, ale standardně se k němu připojujete přes klient ve svém počítači. Na Linuxu bude součástí systému. Na Windows můžete použít [Git for Windows](https://gitforwindows.org/)
* Repozitář si můžete tzv. naklonovat na svůj počítač. Zde je tutorial pro základní práci s Git z příkazové řádky [Command line Git](https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html). Hlavně budte potřebovat příkazy clone, add, commit, push, pull a status. Repozitář si můžete naklonovat pomocí HTTPS, pak budete muset pokaždé zadávat přihlašovací údaje, nebo pomocí SSH. K tomu si potřebujete na počítači vytvořit SSH klíč a jeho veřejnou část dát na GitLab. [A quick GitLab SSH key configuration example](https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/How-to-configure-GitLab-SSH-keys-for-secure-Git-connections).
* Pro inspiraci se můžete podívat na stránky [studentů minulého běhu]((https://b232_b3b35jvc.pages.fel.cvut.cz/prednasky/lide.html)), nebo studentů [How to make (almost) anything](https://fab.cba.mit.edu/classes/863.23/people.html).
Další reference
---------------
* [Computer-Aided Design](http://academy.cba.mit.edu/classes/computer_design/index.html)
* [Project Presentation](http://academy.cba.mit.edu/classes/project_presentation/index.html)
* [Project Development](http://academy.cba.mit.edu/classes/project_development/index.html)
* [FAB LAB links](http://fab.cba.mit.edu/about/faq/)
* [Digital Fabrication presentation](http://ng.cba.mit.edu/show/script/22.09.fab.html)
* [IDF: HTML Tags](https://nathanmelenbrink.github.io/lab/website/codetags.html)
* [IDF: How to Make a Website](https://nathanmelenbrink.github.io/lab/website/htmlcss.html)
---